home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / kowin / font / tcwin24s.lzh / tc_load.c < prev    next >
C/C++ Source or Header  |  1993-04-05  |  4KB  |  165 lines

  1. /****************************/
  2.  
  3.     TC_WIN.win
  4.  
  5.     TC font loader        1991 1/28 小笠原博之
  6.                 SPS-NET: SPS0783 COR.
  7.  
  8. /****************************/
  9.  
  10. #include    <stdio.h>
  11. #include    <wlib.h>
  12. #include    "tc_win.h"
  13.  
  14. extern    char    *tcfont;
  15. extern    UskMes();
  16.  
  17. int    defchar= 0;
  18.  
  19. /****************************************/
  20. /*    .fon ファイルの読み込み        */
  21. /****************************************/
  22. char *
  23. Tc_load( wp, fname )
  24. WindowID    wp;
  25. unsigned char    *fname;
  26. {
  27.     FILE    *fp;
  28.     unsigned char    *ptr= (unsigned char*)tcfont;
  29.     UskMes( "読み込み中", wp );
  30.     defchar= 0;
  31.     if( fp= fopen( fname, "rb" ) ){
  32.         int    i;
  33.         for( i= 0 ; i< 16 ; i++, ptr+= (72*16) /*512*/ ){
  34.             int    k;
  35.             for( k=0 ; k<16 ; k++ ){
  36.                 int        j;
  37.                 unsigned char    *pptr= ptr+k*3;
  38.                 for( j=0 ; j<24 ; j++, pptr+= (16*3) ){
  39.                     *pptr=   ~getc(fp);
  40.                     pptr[1]= ~getc(fp);
  41.                     pptr[2]= 255;
  42.                 }
  43.                 defchar++;
  44.                 if( feof( fp ) )
  45.                     break;
  46.             }
  47.         }
  48.         while( !feof( fp ) ){
  49.             int    j;
  50.             for( j=0 ; j<48 ; j+=3 ){
  51.                 int    i;
  52.                 unsigned char    *pptr= (unsigned char*)(ptr+j);
  53.                 for( i=0 ; i<24 ; i++, pptr+= 16*3 ){
  54.                     *pptr=   ~getc(fp);
  55.                     pptr[1]= ~getc(fp);
  56.                     pptr[2]= ~getc(fp);
  57.                 }
  58.                 if( defchar++ >= MaxChar ){
  59.                     fclose( fp );
  60.                     return    "Warning:データが多すぎます!";
  61.                 }
  62.             }
  63.             ptr+= 72*16/*512*/;
  64.         }
  65.     loopexit:
  66.         fclose( fp );
  67.     }else{
  68.         *fname= '\0';
  69.         return    "ファイルが見付かりません";
  70.     }
  71.     UskMes( "読み込み終了", wp );
  72.     return    0;
  73. }
  74.  
  75. /****************************************/
  76. /*    .fon ファイルの書き込み        */
  77. /****************************************/
  78. Tc_save( wp, fname )
  79. WindowID    wp;
  80. unsigned char    *fname;
  81. {
  82.     FILE    *fp;
  83.     unsigned char    *ptr= (unsigned char*)tcfont;
  84.     extern    int    editflag;
  85.  
  86.     if( defchar <= 0 ){
  87.         UskMes( "セーブ範囲が設定されていません", wp );
  88.         return;
  89.     }
  90.     if( fp= fopen( fname, "wb" ) ){
  91.         int    i;
  92.         int    save= defchar;
  93.         UskMes( "書き込み中", wp );
  94.         for( i=0 ; i<16 ; i++, ptr+= 72*16/*512*/ ){
  95.             int    k;
  96.             for( k=0 ; k<16 ; k++ ){
  97.                 int        j;
  98.                 unsigned char    *pptr= ptr+k*3;
  99.                 for( j=0 ; j<24 ; j++, pptr+= 16*3/*32*/ ){
  100.                     putc( ~(*pptr), fp );
  101.                     putc( ~(pptr[1]), fp );
  102.                 }
  103.                 if( --save <= 0 )
  104.                     break;
  105.             }
  106.             if( save <= 0 )
  107.                 break;
  108.         }
  109.         while( save>0 ){
  110.             int    j;
  111.             for( j=0 ; j<48 ; j+=3 ){
  112.                 int    i;
  113.                 unsigned char    *pptr= (unsigned char*)(ptr+j);
  114.                 for( i=0 ; i<24 ; i++, pptr+= 16*3 ){
  115.                     putc( ~(*pptr), fp );
  116.                     putc( ~(pptr[1]), fp );
  117.                     putc( ~(pptr[2]), fp );
  118.                 }
  119.                 if( --save <= 0)
  120.                     break;
  121.             }
  122.             ptr+= 72*16/*512*/;
  123.         }
  124.         fflush( fp );
  125.         if( ferror() ){
  126.             UskMes( "書き込みエラー", wp );
  127.         }else{
  128.             UskMes( "書き込み正常終了しました", wp );
  129.             editflag= FALSE;
  130.         }
  131.         fclose( fp );
  132.     }else
  133.         UskMes( "ファイルがOPENできません", wp );
  134. }
  135.  
  136. /****************************************/
  137. /*    ファイル名を得る        */
  138. /****************************************/
  139. setfname( fname )
  140. char    *fname;
  141. {
  142.     if( !strchr( fname, '.' ) )
  143.         strcat( fname, ".fon" );
  144. }
  145.  
  146. /****************************************/
  147. /*    ファイル名の変更        */
  148. /****************************************/
  149. Tc_rename( wp, fname )
  150. WindowID wp;
  151. char    *fname;
  152. {
  153.     extern    int    editflag;
  154.     char    strbuf[256];
  155.     UskMes( "ファイル名を入力して下さい", wp );
  156.     lineinput( strbuf );
  157.     if( *strbuf ){
  158.         strcpy( fname, strbuf );
  159.         UskMes( "ファイル名を変更しました", wp );
  160.         editflag= TRUE;
  161.     }else
  162.         UskMes( "キャンセルしました", wp );
  163. }
  164.  
  165.